﻿<%
'''依赖层级:000
'''依赖文件:无
'''底层配置类
'''配置分两种，底层的environment和可控的config。
'''environment参数只能在本类里进行修改
Class AshapoConfig

	'''所有使用到的环境组件名字典
	Private s_environment
	
	'''所有配置项字典
	Private s_config
	
	'''构造
	Private Sub Class_Initialize()
	
		'如果修改了词典组件名则必须也在本处进行修改，否则导致组件无法找到
		Dim t_dict_name : t_dict_name = "Scripting.Dictionary"
		
		Set s_environment = Server.CreateObject(t_dict_name)
		Set s_config = Server.CreateObject(t_dict_name)
		
		setEnvironment_()
	End Sub
	
	'''析构
	Private Sub Class_Terminate()
		Set s_config = Nothing
		Set s_environment = Nothing
	End Sub
	
	'''ahsapo底层所必须设置的项，只能在本处修改才有效
	'''主要是设置一些组件名称
	Private Sub setEnvironment_()
		s_environment("scripting.dictionary") 			= "Scripting.Dictionary"
		s_environment("scripting.filesystemobject") 	= "Scripting.FileSystemObject"
		
		s_environment("adodb.stream") 					= "Adodb.Stream"
		
		s_environment("adodb.connection") 				= "Adodb.Connection"
		s_environment("adodb.command") 					= "Adodb.Command"
		s_environment("adodb.recordset") 				= "Adodb.Recordset"
		
		s_environment("msscriptcontrol.scriptcontrol")  = "MSScriptControl.ScriptControl"
		
		s_environment("msxml2.serverxmlhttp")			= "MSXML2.serverXMLHTTP"
		s_environment("msxml2.xmlhttp")					= "MSXML2.XMLHTTP"
		s_environment("microsoft.xmlhttp")				= "Microsoft.XMLHTTP"

	End Sub
	
	'''获取当前环境的基本运行参数
	'p_s:参数名，主要是一些组件名称
	Public Property Get Environment(Byval p_s)
		Environment = s_environment(Lcase(p_s))
	End Property
	
	'''获取当前的设置
	'''todo 待修改
	'p_key:设置键名，不区分大小写
	Public Default Property Get Value(Byval p_key)
		'If IsObject( s_config(Ucase(p_key)) ) Then
		'	Set Value = s_config(Ucase(p_key))
		'Else
		'	Value = s_config(Ucase(p_key))
		'End If

		Call Assign( Value, s_config(Ucase(p_key)) )
	
		'Config = s_config(Ucase(p_key))
	End Property
	
	'''设置当前设置
	'''todo 待修改
	'''如果在公共模块中调用，则作用于全部模块
	'''如果在配置文件中调用，则作用于整个所属模块
	'''如果临时调用则在当前运行时有效
	'p_key:设置键名，不区分大小写
	'p_val:键值，可以是任意变量
	Public Property Let Value(Byval p_key, Byval p_val)
		s_config(Ucase(p_key)) = p_val
	End Property
	
	'''设置当前设置
	'''todo 待修改
	'''如果在公共模块中调用，则作用于全部模块
	'''如果在配置文件中调用，则作用于整个所属模块
	'''如果临时调用则在当前运行时有效
	'p_key:设置键名，不区分大小写
	'p_val:键值，可以是任意变量
	Public Property Set Value(Byval p_key, Byval p_val)
		Set s_config(Ucase(p_key)) = p_val
	End Property
	
End Class
%>